Amazon InspectorでAmazon LinuxのCVEによる評価をしてみた
はじめに
Amazon Inspectorは、自動化されたセキュリティ評価サービスです。 ルールパッケージの1つとして、CVEを利用できます。
CVE(Common Vulnerabilities and Exposures)は、非営利団体のMITRE社が採番している識別子です。 脆弱性に識別番号(CVE-ID)を採番することで、主に相互参照や関連付けに利用されます。
Inspectorを使ってAmazon LinuxのCVEによる評価をしてみました。 以下のようにすすめ、Inspectorで検知された脆弱性がセキュリティアップデートで解消されることを確認します。
- Amazon Linuxインスタンスの作成
- Amazon Inspectorによる評価
- 評価結果の確認(脆弱性あり)
- セキュリティアップデートの適用
- Amazon Inspectorによる評価(2回目)
- 評価結果の確認(脆弱性なし)
Amazon Linuxインスタンスの作成
対応OSの確認
Inspectorには、AWSエージェントが必要です。 Linuxの場合以下がサポートされます(2016/10/30現在)最新のサポート状況はこちらをご覧ください。
- Amazon Linux (2015.03 or later)
- Ubuntu (14.04 LTS)
- Red Hat Enterprise Linux (7.2)
- CentOS (7.2)
Publicサブネットに作成
Inspectorを利用するためには、Inspectorとs3のパブリックエンドポイントに通信出来る必要があります。 s3はAWSエージェントの自動更新に利用されます。ユーザはエージェント更新を行う必要はありません。 EC2をインターネット接続可能なサブネット(=Publicサブネット)に作成します。 通信はアウトバウンドで行われるため、セキュリティグループ等でインバウンド許可を与える必要はありません。
初回起動時のセキュリティアップデートの無効化
Amazon Linux AMIは初回起動時に必須または重要なセキュリティアップデートをインストールします。 便利な機能ですが、脆弱性を検知したい今回の検証では無効化します。
インスタンス作成時にユーザーデータを指定することでアップデートを無効化出来ます。repo_upgrade: none
を指定します。
余談ですが、その他のオプションはこちらをご覧ください。
EC2にタグを設定
Inspectorは検査対象のEC2をタグで指定します。タグはユーザーが決める事が出来ます。
今回はInspector-linux-cve
を用意しました。値がtrueの時に評価対象とします。
AWSエージェントのインストール
wgetコマンドでインストールスクリプトをダウンロードします。
sudo bash install
を実行しエージェントを実行します。
$ wget https://d1wk0tztpsntt1.cloudfront.net/linux/latest/install $ sudo bash install
エージェントの状態はsudo /opt/aws/awsagent/bin/awsagent status
コマンドで確認出来ます。
Amazon Inspectorによる評価
AWSマネージメントコンソールから、Inspectorを選択します。 [今すぐ始める]を選択します。
ステップ1 :前提条件
IAMロールの作成
InspectorがEC2インスタンスにアクセスしデータを収集するにはIAMロールが必要です。 [Amazon Inspector の使用開始] ページで、[ロールの作成または選択] を選択します。
IAMコンソールが起動するので、[許可]を選択します。
続行を選択し、ステップ2に進みます。
ステップ2 :評価ターゲットの定義
評価を行うEC2インスタンスを指定します。
事前に用意したInspector-linux-cve
タグを指定します。
ステップ3 :評価テンプレートの定義
評価テンプレートにCVEを選択します。 複数の評価テンプレートを選択することも出来ます。所要時間はデフォルトの1時間です。
ステップ4: 確認
確認画面です。内容を確認し評価を開始します。
評価テンプレートの実行
左メニュー > 評価テンプレートを開きます。 先ほど作成したテンプレートを選択し実行します。
評価結果の確認(脆弱性あり)
左メニュー > 評価の実行を選択し、ステータスが「分析完了」になるまで待ちます。 結果列の「10」を選択します。
10個の脆弱性が見つかったことがわかります。 重要度Mediumが3個、Highが7個です。
個々を指摘は展開することで詳細を確認出来ます。 インスタンスID、CVE-ID、MITRE社へのリンクなどが表示されます。 以下の例(CVE-2016-6302)では、opensslパッケージのアップデートが推奨されています。
セキュリティアップデートの適用
yum updateに--securityフラグを追加し実行します。フラグにより、セキュリティアップデートのみ適用されます。 適用後にOSを再起動します。
$ sudo yum update --security $ reboot
yum update --security
で行われた操作は以下の通りです。
カッコ内はバージョンです。
- インストール
- kernel(4.4.23-31.54.amzn1)
- アップデート
- bind-libs(32:9.8.2-0.37.rc1.49.amzn1)
- bind-utils(32:9.8.2-0.37.rc1.49.amzn1)
- kernel-tools(4.4.23-31.54.amzn1)
- openssl(1:1.0.1k-15.96.amzn1)
Amazon Inspectorによる評価(2回目)
左メニュー > 評価テンプレートを開きます。 先ほど作成したテンプレートを選択し実行します。
評価結果の確認(脆弱性なし)
左メニュー > 評価の実行を選択し、ステータスが「分析完了」になるまで待ちます。 結果列の「1」を選択します。
結果に「No potential security issues found」とあります。 セキュリティ上の問題は解消されました。
おわりに
Amazon Inspectorを使ってAmazon LinuxのCVEによる評価をしました。 初回のセキュリティアップデートを無効にしたAmazon Linuxでは、10個の問題が発見されました。 yum updateに--securityフラグを追加することで、2回目の評価では問題が解消されました。
CVE情報をウォッチするのは骨が折れるので、Inspectorをうまく使っていきたいですね。 エージェントが自動更新される点もポイントが高いと思います。